package com.glsc.ngateway.common.api.amdoc.feign;

import com.glsc.ngateway.common.api.amdoc.dto.*;
import com.glsc.ngateway.common.api.common.config.FeignMultipartSupportConfig;
import com.glsc.ngateway.common.api.common.dto.PageDataResult;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;


/**
 * @Title: FlowWorkController
 * @Description: Controller
 * @author: 张宁
 * @version: 1.0.0
 * @date: 2020/12/21 16:29
 */

@FeignClient(value = "eureka-client-amdoc", configuration = FeignMultipartSupportConfig.class)
public interface IFeignAmdocService {

    @RequestMapping("/assetProduct/getAssetProductList")
    PageDataResult<AssetProductDto> getAssetProductList(@RequestParam("pageNum") Integer pageNum,
                                                     @RequestParam("pageSize") Integer pageSize,
                                                     @RequestParam(value = "productCode", defaultValue = "", required = false) String productCode,
                                                     @RequestParam(value = "product", defaultValue = "", required = false) String product,
                                                     @RequestParam(value = "productNature", defaultValue = "", required = false) String productNature,
                                                     @RequestParam(value = "productSysId", defaultValue = "", required = false) Integer productSysId);

    @RequestMapping("/assetProduct/getAssetProductStaffListBySysId")
    PageDataResult<AssetProductMemberDto> getAssetProductStaffListBySysId(@RequestParam("pageNum") Integer pageNum,
                                                                       @RequestParam("pageSize") Integer pageSize,
                                                                       @RequestParam("productSysId") Integer productSysId);


    @RequestMapping("/assetProduct/getAssetProductWorkFlowListBySysId")
    PageDataResult<AssetProductWorkFlowDto> getAssetProductWorkFlowListBySysId(@RequestParam("pageNum") Integer pageNum,
                                                                            @RequestParam("pageSize") Integer pageSize,
                                                                            @RequestParam("productSysId") Integer productSysId,
                                                                            @RequestParam(value = "workflowIdList", required = false) List<Integer> workflowIdList,
                                                                            @RequestParam(value = "requestName", required = false) String requestName);

    @RequestMapping("/assetProduct/getAssetProductDocDirectoryListBySysId")
    PageDataResult<AssetProductDocDirectoryDto> getAssetProductDocDirectoryListBySysId(@RequestParam("pageNum") Integer pageNum,
                                                                                    @RequestParam("pageSize") Integer pageSize,
                                                                                    @RequestParam("productSysId") Integer productSysId);

    @RequestMapping("/assetProduct/getAssetProductDirTemplate")
    PageDataResult<AssetProductDirTempDto> getAssetProductDirTemplate(@RequestParam("pageNum") Integer pageNum,
                                                                   @RequestParam("pageSize") Integer pageSize,
                                                                   @RequestParam("productNature") String productNature);

    @RequestMapping("/assetProduct/getAssetProductDocListBySysId")
    PageDataResult<AssetProductDocDto> getAssetProductDocListBySysId(@RequestParam("pageNum") Integer pageNum,
                                                                  @RequestParam("pageSize") Integer pageSize,
                                                                  @RequestParam("productSysId") Integer productSysId,
                                                                  @RequestParam(value = "directory", required = false) Integer directory,
                                                                  @RequestParam(value = "document", required = false) String document);

    @RequestMapping(value = "/assetProduct/getAssetProductDocListComprehensive", method = RequestMethod.POST)
    PageDataResult<List<AssetProductDocComprehensiveDto>> getAssetProductDocListComprehensive(@RequestBody AssetProductRequestComprehensiveDto requestDto);

    @RequestMapping(value = "/assetProduct/getOaWorkflowRequestPage", method = RequestMethod.GET)
    PageDataResult<AssetFlowDto> getOaWorkflowRequestPage(@RequestParam("pageNum") Integer pageNum,
                                                       @RequestParam("pageSize") Integer pageSize,
                                                       @RequestParam(value = "workflowIdList", required = false) List<Integer> workflowIdList,
                                                       @RequestParam(value = "requestName", required = false) String requestName,
                                                       @RequestParam(value = "currentNodeIdList", required = false) List<String> currentNodeIdList);

    @RequestMapping("/assetProduct/getOaWorkflowInfoByRequestId")
    AssetFlowDto getOaWorkflowInfoByRequestId(@RequestParam("requestId") Integer requestId);

    @RequestMapping("/assetProduct/getAssetProductSaleAgencyList")
    PageDataResult<AssetProductSaleAgencyDto> getAssetProductSaleAgencyList(@RequestParam("pageNum") Integer pageNum,
                                                                         @RequestParam("pageSize") Integer pageSize);

    @RequestMapping("/assetProduct/getAssetProductDefaultMemberList")
    PageDataResult<AssetProductDefaultMemberDto> getAssetProductDefaultMemberList(@RequestParam("pageNum") Integer pageNum,
                                                                               @RequestParam("pageSize") Integer pageSize);

    @RequestMapping("/assetProduct/getInvestmentManagerInfo")
    List<InvestmentManagerDto> getInvestmentManagerInfo(@RequestParam("id") List<Integer> id);

    @RequestMapping("/assetProduct/getAssetViewByName")
    PageDataResult getAssetViewByName(@RequestParam("pageNum") Integer pageNum,
                                      @RequestParam("pageSize") Integer pageSize,
                                      @RequestParam("view") String view,
                                      @RequestParam(value = "productCode", defaultValue = "", required = false) String productCode,
                                      @RequestParam(value = "product", defaultValue = "", required = false) String product,
                                      @RequestParam(value = "productNature", defaultValue = "", required = false) String productNature,
                                      @RequestParam(value = "productSysId", defaultValue = "", required = false) Integer productSysId);

    @RequestMapping("/assetProduct/getAssetProductWorkFlowListView")
    PageDataResult<AssetProductWorkFlowListViewDto> getAssetProductWorkFlowListView(@RequestBody AssetProductWorkFlowListViewDto assetProductWorkFlowListViewDto);

    @RequestMapping("/assetProduct/getAssetProductRequestNodeListView")
    PageDataResult<AssetProductRequestNodeListViewVo> getAssetProductRequestNodeListView(@RequestBody AssetProductRequestNodeListViewDto assetProductRequestNodeListViewDto);

    @RequestMapping(value = "/assetProduct/createProduct")
    String createProduct(@RequestBody String productInfo);


    @RequestMapping(value = "/assetProduct/updateProduct")
    String updateProduct(@RequestBody String productInfo);


    @RequestMapping(value = "/assetProduct/batupload")
    String batupload(@RequestBody String productInfo);

}

